package com.funymmz.demo.service;

import com.funymmz.demo.domain.User;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface UserService {

    /**
     *读取所有用户数据
     * @return 所有用户
     */
    List<User> findAll();

    /**
     * 分页获取用户
     * @param pageable pageable
     * @return 用户列表
     */
    Page<User> findAll(Pageable pageable);

    /**
     * 带查询的分页
     * @param userExample userExample
     * @param pageable pageable
     * @return Page<User>
     */
    Page<User> findAll(Example<User> userExample, Pageable pageable);

    /**
     * 插入用户信息
     * @param user 用户
     * @return user
     */
    User insert(User user);

    /**
     * 更新用户信息
     * @param user 用户
     * @return user
     */
    User update(User user);

    /**
     *删除用户信息
     * @param user 用户
     */
    void delete(User user);

    /**
     * 通过id删除用户信息
     * @param id 用户id
     */
    void delete(Long id);

    /**
     * 通过id获取用户
     * @param id 用户id
     * @return 用户
     */
    User getById(Long id);

    /**
     * 通过用户名获取用户
     * @param username 用户名username
     * @return 用户
     */
    List<User> findByUsername(String username);

    /**
     * 匹配用户名和密码
     * @param username 用户名
     * @param password 密码
     * @return 匹配信息（1或-1）
     */
    List<User> findByUsernameAndPassword(String username, String password);
}
